home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / abreed3.lha / ENDSCROLL.s < prev    next >
Text File  |  1995-09-13  |  4KB  |  238 lines

  1.  
  2. ; The game has been finished!
  3.  
  4. ; Deallocate all memory, ask for scroll screen
  5. ; memory. Load end of game music (whatever that
  6. ; is). Print top 16 lines of text then fade up.
  7. ;  After a few seconds, scroll it upwards with
  8. ; the text following....
  9.  
  10.  move.l LEVELDATA,d1
  11.  move.l d1,a1
  12.  move.l #120000,d0
  13.  move.l 4.w,a6
  14.  jsr -210(a6)
  15.  
  16.  move.l TEXTSCRN,d1
  17.  move.l d1,a1
  18.  move.l #10240*2,d0
  19.  move.l 4.w,a6
  20.  jsr -210(a6)
  21.  
  22.  jsr RELEASEWALLMEM
  23.  jsr RELEASESAMPMEM
  24.  jsr RELEASEFLOORMEM
  25.  jsr RELEASEOBJMEM
  26.  
  27.  move.l #2,d1    
  28.  move.l #10240*4,d0
  29.  move.l 4.w,a6
  30.  jsr -198(a6)
  31.  move.l d0,TEXTSCRN
  32.  
  33.  move.w d0,TSPTl
  34.  swap d0
  35.  move.w d0,TSPTh
  36.  swap d0
  37.  move.w d0,TSPTl2
  38.  swap d0
  39.  move.w d0,TSPTh2
  40.  
  41.  clr.b DOSCROLLING
  42.  
  43.  move.w #0,TXTCOLL
  44.  move.w #0,BOTLET
  45.  move.w #0,ALLTEXT
  46.  
  47.  move.l #$dff000,a6    ; a6 points at the first custom chip register.
  48.  move.l #TEXTCOP,$80(a6)    ; Point the copper at our copperlist.
  49.  
  50.  move.l #SCROLLINTER,$6c.w
  51.  
  52.  move.w #$a201,TSCP
  53.  
  54.  move.w #$20,$1dc(a6) 
  55.  
  56.  jsr CLRTWEENSCRN
  57.  add.l #20480,TEXTSCRN
  58.  jsr CLRTWEENSCRN
  59.  sub.l #20480,TEXTSCRN
  60.  
  61.  move.l #ENDGAMETEXT,a0
  62.  move.w #0,d0
  63.  moveq #15,d7
  64. PUTONS
  65.  move.l TEXTSCRN,a1
  66.  bsr DRAWLINEOFTEXT 
  67.  add.w #82,a0
  68.  addq #1,d0
  69.  dbra d7,PUTONS
  70.  
  71.  move.w #$000,d0
  72.  move.w #15,d1
  73. .fdup2
  74.  move.w #15,d3
  75.  move.w #0,d2
  76. .fdup
  77.  move.w d0,ALLTEXT
  78.  move.w d2,ALLTEXTLOW
  79.  add.w #$111,d2
  80. .wtframe:
  81.  btst #5,$dff000+intreqrl
  82.  beq.s .wtframe
  83.  move.w #$0020,$dff000+intreq
  84.  dbra d3,.fdup
  85.  add.w #$111,d0
  86.  dbra d1,.fdup2
  87.  
  88.  move.w #400,d3
  89. .fdupwt
  90. .wtframet:
  91.  btst #5,$dff000+intreqrl
  92.  beq.s .wtframet
  93.  move.w #$0020,$dff000+intreq
  94.  dbra d3,.fdupwt
  95.  
  96.  move.w #0,SCROLLPOS
  97.  move.l #ENDOFGAMESCROLL,SCROLLPT
  98.  move.l #ENDOFGAMESCROLL,OLDSCROLL
  99.  move.w #17,NEXTLINE
  100.  move.w #17,LASTLINE
  101.  
  102.  st DOSCROLLING
  103.  
  104. SCROLLINGLOOP:
  105.  tst.b DONEXTLINE
  106.  beq.s SCROLLINGLOOP
  107.  clr.b DONEXTLINE
  108.  
  109.  move.l SCROLLPT,a0
  110.  move.l a0,OLDSCROLL
  111.  tst.b (a0)
  112.  blt.s .notex
  113.  add.w #80,a0
  114. .notex
  115.  adda.w #2,a0
  116.  cmp.l #ENDOFEND,a0
  117.  blt.s .nostartscroll
  118.  move.l #ENDOFGAMESCROLL,a0
  119. .nostartscroll:
  120.  move.l a0,SCROLLPT
  121.  
  122.  move.w NEXTLINE,d0
  123.  move.l TEXTSCRN,a1
  124.  bsr CLEARLINEOFTEXT
  125.  tst.b (a0)
  126.  blt.s .okitsaline
  127.  bsr DRAWLINEOFTEXT
  128. .okitsaline:
  129.  
  130.  move.l OLDSCROLL,a0
  131.  move.w LASTLINE,d0
  132.  move.l TEXTSCRN,a1
  133.  bsr CLEARLINEOFTEXT
  134.  tst.b (a0)
  135.  blt.s .okitsatwo
  136.  bsr DRAWLINEOFTEXT
  137. .okitsatwo:
  138.  
  139.  move.w NEXTLINE,d0
  140.  sub.w #16,d0
  141.  move.w d0,LASTLINE
  142.  add.w #1,d0
  143.  and.w #15,d0
  144.  add.w #16,d0
  145.  move.w d0,NEXTLINE
  146.  bra SCROLLINGLOOP
  147.  
  148. SCROLLINTER:
  149.  move.w #$0010,$dff000+intreq
  150.  
  151.  tst.b DOSCROLLING
  152.  bne.s dosome
  153.  rte
  154.  
  155. CLEARLINEOFTEXT:
  156.  move.l d0,-(a7)
  157.  
  158.  muls #80*16,d0
  159.  moveq #0,d1
  160.  move.l TEXTSCRN,a2
  161.  add.l d0,a2
  162.  move.w #(20*2),d0
  163. CLRIT:
  164.  move.l d1,(a2)+
  165.  move.l d1,(a2)+
  166.  move.l d1,(a2)+
  167.  move.l d1,(a2)+
  168.  move.l d1,(a2)+
  169.  move.l d1,(a2)+
  170.  move.l d1,(a2)+
  171.  move.l d1,(a2)+
  172.  dbra d0,CLRIT
  173.  
  174.  move.l (a7)+,d0
  175.  rts
  176.  
  177.  
  178. dosome:
  179.  
  180.  movem.l d0/d1,-(a7)
  181.  
  182.  move.w TOPLET,d0
  183.  move.w BOTLET,d1
  184.  sub.w #$222,d1
  185.  add.w #$222,d0
  186.  move.w d0,TOPLET
  187.  move.w d1,BOTLET
  188.  
  189.  sub.w #1,scrolldownaline
  190.  bgt.s .noline
  191.  
  192.  sub.w #1,LINESLEFTTOSCROLL
  193.  bgt.s .NONOTHERLINE
  194.  move.w #16,LINESLEFTTOSCROLL
  195.  st DONEXTLINE
  196. .NONOTHERLINE
  197.  
  198.  move.w #$333,TOPLET
  199.  move.w #$ccc,BOTLET
  200.  
  201.  move.w SCROLLPOS,d0
  202.  move.w d0,d1
  203.  add.w #1,d0
  204.  and.w #255,d0
  205.  move.w d0,SCROLLPOS
  206.  
  207.  muls #80,d0
  208.  muls #80,d1
  209.  add.l TEXTSCRN,d0
  210.  add.l TEXTSCRN,d1
  211.  move.w d0,TSPTl
  212.  swap d0
  213.  move.w d0,TSPTh
  214.  move.w d1,TSPTl2
  215.  swap d1
  216.  move.w d1,TSPTh2
  217.  
  218.  move.w #3,scrolldownaline
  219.  
  220. .noline:
  221.  movem.l (a7)+,d0/d1
  222.  rte
  223.  
  224. LINESLEFTTOSCROLL:
  225.  dc.w 14
  226.  
  227. DONEXTLINE:
  228.  dc.w 0
  229. scrolldownaline:
  230.  dc.w 3
  231. SCROLLPOS: dc.w 0
  232. DOSCROLLING: dc.w 0
  233. SCROLLPT: Dc.l 0
  234. OLDSCROLL: dc.l 0
  235. NEXTLINE: dc.w 0
  236. LASTLINE: dc.w 0
  237.  
  238.